export default {
  //将bytes单位的文件大小转为MB单位的大小
  bytesToMB(bytes) {
    return (bytes / (1024 * 1024)).toFixed(2) + "MB"
  },
  //如果数字小于0，返回0
  zeroIfNegative(number) {
    return number < 0 ? 0 : number
  },
  //将两个浮点数安全地相加，避免出现精度溢出的问题
  preciseAdd(num1, num2) {
    function getDecimalLength(num) {
      let str = num.toString()
      let decimalPart = str.split(".")[1]
      return decimalPart ? decimalPart.length : 0
    }
    function transformToInt(num, factor) {
      return Math.round(num * factor)
    }
    let factor = Math.pow(10, Math.max(getDecimalLength(num1), getDecimalLength(num2)))
    return (transformToInt(num1, factor) + transformToInt(num2, factor)) / factor
  },
  //将分单位的金额转为元单位的金额，并去除小数点后面多余的 0
  fenToYuan(fen) {
    return (fen / 100).toFixed(2).replace(/\.?0*$/, "")
  },
  //四舍五入，取小数点末 n 位，如果小数点位数不够，则不作处理
  round(number, n) {
    return Math.round(number * Math.pow(10, n)) / Math.pow(10, n)
  },
  //将整数扩展为指定位数的字符串，不足位数的部分用 0 填充
  padZero(number, length = 2) {
    return (number + "").padStart(length, "0")
  },
}
